//class for find queries function, by Fransiska Putri Wina
#ifndef MENU_FIND_QUERIES_H_ 
#define MENU_FIND_QUERIES_H_

#include <iostream>
#include <string>
#include <stdexcept>
#include <vector>
//other types
#include "Category.h"
#include "Menu_Item.h"
#include "Recipe.h"
#include "Ingredient.h"
#include "Order.h"
#include "Order_Item.h"


class Menu_Find_Queries 
{
public:
        //default constructor
        Menu_Find_Queries();

		 /* MGM C.2 c: START */
		struct cost
		{
			int menu_id;
			string menu_name;
			double price;
			int quantity;
			double sum;
			cost(int id, string m, double p, int q, double s): menu_id(id), menu_name(m), price(p), quantity(q), sum(s) {}
			bool operator < (const cost& c) const
			{
					return (sum > c.sum);
			}
		};
		/* MGM C.2 c: START */

      
		 
    	//procedure for solving B1a problem, by Fransiska Putri Wina
		void B2a(vector<Order>,vector<Menu_Item>,vector<Order_Item>);
      
		//procedure for solving B1b problem, by Muhammad Ghufron Mahfudhi
		void B2b(vector<Order>,vector<Menu_Item>,vector<Order_Item>);
		
    	//procedure for solving B1c problem, by Muhammad Ghufron Mahfudhi
    	void B2c(vector<Menu_Item>, vector<Order_Item>);
      
		//procedure for solving C2c problem, by Muhammad Ghufron Mahfudhi
		void C2c(vector<Menu_Item>, vector<Order_Item>);
		
		//procedure for solving C2d problem, by Muhammad Ghufron Mahfudhi
		void C2d (vector<Order>,vector<Menu_Item>, vector<Order_Item>);
        
};
#endif //MENU_FIND_QUERIES_H_
